package Datos;
// Generated 15-dic-2012 9:31:07 by Hibernate Tools 3.2.1.GA


import java.sql.Date;
import java.util.HashSet;
import java.util.Set;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Set;
import java.util.Vector;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 * Licencia generated by hbm2java
 */
public class Licencia  implements java.io.Serializable {


     private Integer codigo;
     private Date fecha;
     private Date fechaSalida;
     private Date fechaRetorno;
     private Integer diasPermitidos;
     private String observacion;
     private int ciEmpleado;
     private int codTipoLicencia;

    public Licencia() {
    }

	
    public Licencia(int ciEmpleado, int codTipoLicencia) {
        this.ciEmpleado = ciEmpleado;
        this.codTipoLicencia = codTipoLicencia;
    }
    public Licencia(Date fecha, Date fechaSalida, Date fechaRetorno, Integer diasPermitidos, String observacion, int ciEmpleado, int codTipoLicencia) {
       this.fecha = fecha;
       this.fechaSalida = fechaSalida;
       this.fechaRetorno = fechaRetorno;
       this.diasPermitidos = diasPermitidos;
       this.observacion = observacion;
       this.ciEmpleado = ciEmpleado;
       this.codTipoLicencia = codTipoLicencia;
    }
   
    public Integer getCodigo() {
        return this.codigo;
    }
    
    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }
    public Date getFecha() {
        return this.fecha;
    }
    
    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }
    public Date getFechaSalida() {
        return this.fechaSalida;
    }
    
    public void setFechaSalida(Date fechaSalida) {
        this.fechaSalida = fechaSalida;
    }
    public Date getFechaRetorno() {
        return this.fechaRetorno;
    }
    
    public void setFechaRetorno(Date fechaRetorno) {
        this.fechaRetorno = fechaRetorno;
    }
    public Integer getDiasPermitidos() {
        return this.diasPermitidos;
    }
    
    public void setDiasPermitidos(Integer diasPermitidos) {
        this.diasPermitidos = diasPermitidos;
    }
    public String getObservacion() {
        return this.observacion;
    }
    
    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }
    public int getCiEmpleado() {
        return this.ciEmpleado;
    }
    
    public void setCiEmpleado(int ciEmpleado) {
        this.ciEmpleado = ciEmpleado;
    }
    public int getCodTipoLicencia() {
        return this.codTipoLicencia;
    }
    
    public void setCodTipoLicencia(int codTipoLicencia) {
        this.codTipoLicencia = codTipoLicencia;
    }

//-------------------------------------------------------------------------
    public int cantTuplas() {
        return HibernateUtil.CantTuplas(resultado());
    }
 //--------------------------------------------------------------------------//
    public void insertar() {

        try {
            int cant = cantTuplas() + 1;
            Session Sesion = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = Sesion.beginTransaction();
            this.setCodigo(cant);
            Sesion.save(this);
            tx.commit();
            Sesion.close();
            JOptionPane.showMessageDialog(null, "SE INSERTARON LOS DATOS CORRECTAMENTE EN LA BD.", "MENSAJE", JOptionPane.WARNING_MESSAGE, null);

        } catch (HibernateException e) {
            System.out.println(" Error al INSERTAR  " + e.getMessage());
            Logger.getLogger(Licencia.class.getName()).log(Level.SEVERE, null, e);
        }

    }
//--------------------------------------------------------------------------//

    public void modificar() {

        try {

            Session Sesion = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = Sesion.beginTransaction();
            Sesion.update(this);
            tx.commit();
            Sesion.close();
            JOptionPane.showMessageDialog(null, "SE MODIFICARON LOS DATOS CORRECTAMENTE EN LA BD.", "MENSAJE", JOptionPane.WARNING_MESSAGE, null);

        } catch (HibernateException e) {
            System.out.println("Error al MODIFICAR  " + e.getMessage());
            Logger.getLogger(Licencia.class.getName()).log(Level.SEVERE, null, e);
        }
    }
//-----------------------------------------------------------------------------//

    public void eliminar() {

        try {

            Session Sesion = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = Sesion.beginTransaction();
            Licencia t = getLicencia();
            Sesion.delete(t);
            tx.commit();
            Sesion.close();
            JOptionPane.showMessageDialog(null, "SE ELIMINARON LOS DATOS CORRECTAMENTE EN LA BD.", "MENSAJE", JOptionPane.WARNING_MESSAGE, null);

        } catch (HibernateException e) {
            System.out.println("Error al ELIMINAR  " + e.getMessage());
            Logger.getLogger(Licencia.class.getName()).log(Level.SEVERE, null, e);
        }
    }
//-----------------------------------------------------------------------------//

    public boolean existeEmpleado(int ci) {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction ts = session.getTransaction();
        ts.begin();
        ResultSet rs = null;
        try {
            String query = "SELECT * FROM Licencia "
                    + "WHERE "
                    + "ciEmpleado = " + ci + "";
            PreparedStatement ps = (PreparedStatement) session.connection().prepareStatement(query);
            rs = ps.executeQuery();

        } catch (Exception e) {
            Logger.getLogger(Licencia.class.getName()).log(Level.SEVERE, null, e);
        }

        ts.commit();
        session.close();
        return HibernateUtil.existe(rs);
    }

//--------------------------------------------------------------------------//

    public boolean existeID(int id) {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction ts = session.getTransaction();
        ts.begin();
        ResultSet rs = null;
        try {
            String query = "SELECT * FROM Licencia "
                    + "WHERE "
                    + "codigo = " + id + "";
            PreparedStatement ps = (PreparedStatement) session.connection().prepareStatement(query);
            rs = ps.executeQuery();

        } catch (Exception e) {
            Logger.getLogger(Licencia.class.getName()).log(Level.SEVERE, null, e);
        }

        ts.commit();
        session.close();
        return HibernateUtil.existe(rs);
    }

//--------------------------------------------------------------------------//

    public ResultSet EjecutarConsultaSQL(String sql) {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction ts = session.getTransaction();
        ts.begin();
        ResultSet rs = null;

        try {
            String query = sql;
            PreparedStatement ps = (PreparedStatement) session.connection().prepareStatement(query);
            rs = ps.executeQuery();
        } catch (Exception e) {
            Logger.getLogger(Licencia.class.getName()).log(Level.SEVERE, null, e);
        }

        ts.commit();
        session.close();
        return rs;
    }

//-----------------------------------------------------------------------------//

    public String listar() {
        ResultSet rs = EjecutarConsultaSQL("select *from Licencia order by codigo;");

        return HibernateUtil.mostrarTuplas(rs, "Lista de Licencia", new String[]{"CODIGO", "FECHA", "FECHA_SALIDA", "FECHA_RETORNO", "DIAS_PERMITIDOS","OBSERVACION","EMPLEADO_CI","TIPO_LICENCIA"},
                new String[]{"codigo", "login", "password", "nivel", "estado","ciEmpleado","codGrupo"});
    }

//-----------------------------------------------------------------------------//

    public ResultSet resultado() {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction ts = session.getTransaction();
        ts.begin();
        ResultSet rs = null;

        try {
            String query = "SELECT * FROM Licencia order by codigo;";
            PreparedStatement ps = (PreparedStatement) session.connection().prepareStatement(query);
            rs = ps.executeQuery();

        } catch (Exception e) {
            Logger.getLogger(Licencia.class.getName()).log(Level.SEVERE, null, e);
        }

        ts.commit();
        session.close();
        return rs;
    }
//-----------------------------------------------------------------------------//

    public Licencia getLicencia() {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = session.getTransaction();
        try {

            tx.begin();
            Licencia t = (Licencia) session.load(Usuario.class, getCodigo());
            return t;
        } catch (Exception e) {
            tx.rollback();
            Logger.getLogger(Licencia.class.getName()).log(Level.SEVERE, null, e);
        }
        return null;
    }

//--------------------------------------------------------------------------//



}


